package top.ed333.mcplugins.configurableevents.action;

import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
 * 表示事件出发后，将要执行的一个动作
 */
public abstract class Action {
    private final Object value;

    public Action(@NotNull Object value) {
        this.value = value;
    }

    /** 动作名称 */
    public abstract String name();

    /** 该动作对应的值，通常可以是字符串、数字、集合等等类型 */
    public Object value() {
        return value;
    }

    /**
     * 执行动作
     * @param player 事件所涉及到的玩家, 对于不是玩家触发的事件可以传入 null 值
     */
    public abstract void execute(@Nullable Player player);
}
